package com.hsjk.szwj.module.chuangkit.service;

import com.hsjk.szwj.framework.common.pojo.PageResult;
import com.hsjk.szwj.module.chuangkit.controller.admin.vo.CopyDesignReqVO;
import com.hsjk.szwj.module.chuangkit.controller.admin.vo.CopyDesignRespVO;
import com.hsjk.szwj.module.chuangkit.controller.admin.vo.DeleteDesignReqVO;
import com.hsjk.szwj.module.chuangkit.controller.admin.vo.GetUserDesignsReqVO;
import com.hsjk.szwj.module.chuangkit.controller.admin.vo.GetUserDesignsRespVO;
import com.hsjk.szwj.module.chuangkit.controller.admin.vo.TemplateCancelCollectionReqVO;
import com.hsjk.szwj.module.chuangkit.controller.admin.vo.TemplateCollectionListReqVO;
import com.hsjk.szwj.module.chuangkit.controller.admin.vo.TemplateCollectionListRespVO;
import com.hsjk.szwj.module.chuangkit.controller.admin.vo.TemplateCollectionReqVO;
import com.hsjk.szwj.module.chuangkit.controller.admin.vo.TemplateForApiUserReqVO;
import com.hsjk.szwj.module.chuangkit.controller.admin.vo.TemplateForApiUserRespVO;
import com.hsjk.szwj.module.chuangkit.controller.admin.vo.TokenRespVO;
import com.hsjk.szwj.module.chuangkit.controller.admin.vo.UpdateTitleReqVO;

import java.util.List;
import java.util.Map;
import java.util.TreeMap;

/**
 * @author chenjiawei
 * @desc
 * @Date 2023/09/26 22:09
 **/
public interface IChuangKitService {
    /**
     * 获取token
     *
     * @return com.hsjk.szwj.module.chuangkit.controller.admin.vo.TokenRespVO
     * @author chenjiawei
     * @date 2023/9/26 10:26 PM
     **/
    TokenRespVO getApiToken();

    /**
     * 刷新token
     *
     * @param refreshToken
     * @return com.hsjk.szwj.module.chuangkit.controller.admin.vo.TokenRespVO
     * @author chenjiawei
     * @date 2023/9/27 12:26 AM
     **/
    TokenRespVO refreshToken(String refreshToken);

    /**
     * 获取sign
     *
     * @return java.lang.String
     * @author chenjiawei
     * @date 2023/9/26 10:54 PM
     **/
    String getSign(Long timestamp);

    /**
     * 查询我的设计
     *
     * @param reqVO
     * @return java.util.List<com.hsjk.szwj.module.chuangkit.controller.admin.vo.GetUserDesignsRespVO>
     * @author chenjiawei
     * @date 2023/9/27 12:46 AM
     **/
    PageResult<GetUserDesignsRespVO> getUserDesigns(GetUserDesignsReqVO reqVO);

    /**
     * 删除,批量删除用户设计
     *
     * @param reqVO
     * @return java.lang.Boolean
     * @author chenjiawei
     * @date 2023/9/27 10:15 AM
     **/
    Boolean deleteDesign(DeleteDesignReqVO reqVO);

    /**
     * 复制用户设计
     *
     * @param reqVO
     * @return com.hsjk.szwj.module.chuangkit.controller.admin.vo.CopyDesignRespVO
     * @author chenjiawei
     * @date 2023/9/27 10:26 AM
     **/
    CopyDesignRespVO copyDesign(CopyDesignReqVO reqVO);

    /**
     * 修改设计名称
     *
     * @param reqVO
     * @return java.lang.Boolean
     * @author chenjiawei
     * @date 2023/9/27 9:03 PM
     **/
    Boolean updateTitle(UpdateTitleReqVO reqVO);

    /**
     * 模板收藏接口
     *
     * @param reqVO
     * @return java.lang.Boolean
     * @author chenjiawei
     * @date 2023/9/27 9:14 PM
     **/
    Boolean templateCollection(TemplateCollectionReqVO reqVO);

    /**
     * 模板取消收藏接口
     *
     * @param reqVO
     * @return java.lang.Boolean
     * @author chenjiawei
     * @date 2023/9/27 9:19 PM
     **/
    Boolean templateCancelCollection(TemplateCancelCollectionReqVO reqVO);

    /**
     * 查询收藏的模板
     *
     * @param reqVO
     * @return com.hsjk.szwj.module.chuangkit.controller.admin.vo.TemplateCollectionListRespVO
     * @author chenjiawei
     * @date 2023/9/27 9:28 PM
     **/
    List<TemplateCollectionListRespVO> getTemplateCollection(TemplateCollectionListReqVO reqVO);

    /**
     * 获取创客贴官方模板
     *
     * @param reqVO
     * @return com.hsjk.szwj.module.chuangkit.controller.admin.vo.TemplateForApiUserRespVO
     * @author chenjiawei
     * @date 2023/10/3 5:57 PM
     **/
    TemplateForApiUserRespVO queryTemplateForApiUser(TemplateForApiUserReqVO reqVO);

    String getTemplateCenterSign(Map<String, String> params);

    String getTemplateEditorSign(TreeMap<String, String> params);

    String requestPackageId();
}
